/**
 * 
 */
package mm.back.dao;

import java.util.List;

import mm.back.entity.DetalleVenta;
import mm.back.entity.Venta;
import mm.back.filtros.VentasFiltro;
import mm.exceptions.MMGenericException;

/**
 * @author PUSDERKIS
 *
 */
public interface VentasDAO {
	
	/**
	 * Guarda la venta.
	 * @param venta la venta a guardar.
	 * @throws MMGenericException en caso de error.
	 */
	void saveVenta(Venta venta) throws MMGenericException;

	/**
	 * obtiene las ventas en base a un filtro.
	 * @param filtro el filtro de ventas.
	 * @return las ventas.
	 */
	List<Venta> buscarVentas(VentasFiltro filtro);

	/**
	 * Busca una venta en base al id.
	 * @param idVenta el id de la venta.
	 * @return la venta.
	 * @throws MMGenericException en caso de error.
	 */
	Venta buscarVenta(Long idVenta);
	
	/**
	 * Actualiza el detalle de una venta.
	 * @param dv el detalle de la venta
	 * @throws MMGenericException
	 */
	void updateDetalle(DetalleVenta dv) throws MMGenericException;
	
	/**
	 * Borra un detalle de la venta.
	 * @param idDetalle
	 * @throws MMGenericException
	 */
	void deleteDetalleVenta(Long idDetalle) throws MMGenericException;
}
